
//当数据变化触发依赖，dep通知所有的Wathcer实例更新视图;自身实例化的时候往dep添加自己
//

class Watcher{
    constructor (vm,key,cb) {
        this.vm = vm 
        this.key = key //data中的属性名
        this.cb =cb //回调函数负责更新视图

        //把watcher对象记录在Dep类的静态属性target上
        Dep.target = this
        //触发get方法，在get方法中调用addSub
        this.oldValue = vm[key] //当访问vm[key] 就会调用get方法

    }
    //当数据发送变化的时候更新视图
    update () {
        let newValue = this.vm[this.key] //调用这个方法的时候已经是新值了
        if(this.oldValue == newValue) {
            return
        }
        this.cb(newValue)
    }


}